#ifndef PARAMETERSPARSER_H
#define PARAMETERSPARSER_H
#include <map>
#include <vector>

/**
 * Klasa parsera parametrów
 * Zawiera mapę z parametrami, wypełnianą przez funkcję parseFlags()
 * Zawiera wektor z plikami odczytanymi przez parseFiles()
 * Obecna wersja przyjmuje pliki podane po przełączniku -f
 * Nie jest idiotoodporny.
 */

class ParametersParser
{
    public:
                                ParametersParser(int _argc, char** _argv);
        virtual                 ~ParametersParser();
   //     std::vector<const char*>      getFilesList() const;
        std::vector<std::string>        getFilesList() const;
        std::map<const char*, bool>   getParametersList() const;
        std::string                   getPattern() const;
        const char*             getCommandOption(const char* name, const char* ddefault);
        bool                    containFlag(const char*);
        void                    parseFlags();
        void                    parseFiles();
        void                    parsePattern();
    protected:
    private:
        std::map<const char*, bool>   m_parameters;
  //      std::vector<const char*>      m_files;
        std::vector<std::string>        m_files;
        std::string                   m_pattern;
        int                     m_argc;
        char**                  m_argv;
        const char*             flags[3];
};

#endif // PARAMETERSPARSER_H
